
#ifndef _MEMBER_BPICKER_H_
#define _MEMBER_BPICKER_H_

#include <BMesh>
#include <BGeometry>
#include <BSphere>
#include <BSurface>
#include <BCylinder>
#include <BGeoSphere>
#include <BBillboard>

#include <BNode>
#include <BPickItem>
#include <BPicker>

#define picker_member(picker)	((member_BPicker*)((BPicker*)picker)->_ptr)

namespace BWE
{
	class member_BPicker
	{
	public:
		member_BPicker(BPicker* picker);
		~member_BPicker();

		void addItem(BPickItem* item);

		void pick(const BLine& line, BNode* node);
		void pick(const BLine& line, BShape* shape);
		void pick(const BLine& line, BMesh* mesh);
		void pick(const BLine& line, BGeometry* geometry);
		void pick(const BLine& line, BSphere* sphere);
		void pick(const BLine& line, BGeoSphere* geosphere);
		void pick(const BLine& line, BCylinder* cylinder);
		void pick(const BLine& line, BBillboard* billboard);

		BPicker*		boss;
		BLine			line;
		BNode*			node;
		BObjectArray	exclusions;

		BList<BHolder<BPickItem>>	items;
	};
}

#endif